home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / PRGMANIA / VERSION1.5 / GEMALERT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-27  |  13.3 KB  |  318 lines

  1. /*************************************************************************
  2.  *  GemAlert.C : Fonctions de gestion des boites d'alerte internes.       *
  3.  *************************************************************************/
  4. #include "WindGem.h"
  5. #include "winproto.h"
  6. #include <xgemfast.h>
  7. #include <vaproto.h>
  8.  
  9. /*-=< Inclusion des descriptions des objets UserDefs. >=-----------------*/
  10. #include "user.h"
  11.  
  12. static int al_image[] = {
  13. 0x3FFF, 0xFFFC, 0x7FFF, 0xFFFE, 0x7FF8, 0x1FFE, 0x7FF0, 0x0FFE, 
  14. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 
  15. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 
  16. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 
  17. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF8, 0x1FFE, 0x7FFC, 0x3FFE, 
  18. 0x7FFF, 0xFFFE, 0x7FFF, 0xFFFE, 0x7FFC, 0x3FFE, 0x7FF8, 0x1FFE, 
  19. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF8, 0x1FFE, 
  20. 0x7FFC, 0x3FFE, 0x7FFF, 0xFFFE, 0x3FFF, 0xFFFC, 0x0000, 0x0000,
  21.  
  22. 0x3FFF, 0xFFFC, 0x7FFF, 0xFFFE, 0x7FF8, 0x1FFE, 0x7FE0, 0x07FE, 
  23. 0x7F80, 0x01FE, 0x7F00, 0x00FE, 0x7E00, 0x007E, 0x7E01, 0xC07E, 
  24. 0x7E03, 0xC07E, 0x7F07, 0x80FE, 0x7FFF, 0x01FE, 0x7FFE, 0x01FE, 
  25. 0x7FFC, 0x03FE, 0x7FF8, 0x07FE, 0x7FF8, 0x07FE, 0x7FF0, 0x0FFE, 
  26. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF8, 0x1FFE, 0x7FFC, 0x3FFE, 
  27. 0x7FFF, 0xFFFE, 0x7FFF, 0xFFFE, 0x7FFC, 0x3FFE, 0x7FF8, 0x1FFE, 
  28. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF8, 0x1FFE, 
  29. 0x7FFC, 0x3FFE, 0x7FFF, 0xFFFE, 0x3FFF, 0xFFFC, 0x0000, 0x0000,
  30.  
  31. 0x3FFF, 0xFFFC, 0x7FFF, 0xFFFE, 0x7FFE, 0x7FFE, 0x7FFC, 0x7FFE, 
  32. 0x7FE4, 0x4FFE, 0x7FC4, 0x47FE, 0x7FC4, 0x47FE, 0x7FC4, 0x47FE, 
  33. 0x7FC4, 0x47FE, 0x7F44, 0x47FE, 0x7E44, 0x47FE, 0x7E44, 0x47FE, 
  34. 0x7E44, 0x467E, 0x7E44, 0x447E, 0x7E44, 0x447E, 0x7E40, 0x047E, 
  35. 0x7E40, 0x047E, 0x7E40, 0x047E, 0x7E00, 0x087E, 0x7E00, 0x107E, 
  36. 0x7E00, 0x407E, 0x7E00, 0x007E, 0x7E01, 0x00FE, 0x7F00, 0x00FE, 
  37. 0x7F00, 0x01FE, 0x7F80, 0x03FE, 0x7FC0, 0x0FFE, 0x7FFF, 0xFFFE, 
  38. 0x7FFF, 0xFFFE, 0x7FFF, 0xFFFE, 0x3FFF, 0xFFFC, 0x0000, 0x0000,
  39.  
  40. 0x3FFF, 0xFFFC, 0x7FFF, 0xFFFE, 0x7FFC, 0x3FFE, 0x7FF8, 0x1FFE, 
  41. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF8, 0x1FFE, 
  42. 0x7FFC, 0x3FFE, 0x7FFF, 0xFFFE, 0x7FFF, 0xFFFE, 0x7FC0, 0x1FFE, 
  43. 0x7F80, 0x0FFE, 0x7F80, 0x0FFE, 0x7FC0, 0x0FFE, 0x7FF0, 0x0FFE, 
  44. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 
  45. 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 0x7FF0, 0x0FFE, 
  46. 0x7FF0, 0x0FFE, 0x7F80, 0x01FE, 0x7F00, 0x00FE, 0x7F00, 0x00FE, 
  47. 0x7F80, 0x01FE, 0x7FFF, 0xFFFE, 0x3FFF, 0xFFFC, 0x0000, 0x0000,
  48.  
  49. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
  50. 0x0000, 0x0000, 0x0000, 0xC790, 0x0000, 0xF844, 0x003D, 0xF830, 
  51. 0x01FF, 0xFCB2, 0x07FF, 0xFC00, 0x0FFF, 0xF848, 0x1F3F, 0xF800, 
  52. 0x1E67, 0xF800, 0x3FCF, 0xFC00, 0x3CFF, 0xFC00, 0x3C9F, 0xFC00, 
  53. 0x7F9F, 0xFE00, 0x7FFF, 0xFE00, 0x7FFF, 0xFE00, 0x7FFF, 0xFE00, 
  54. 0x3FFF, 0xFC00, 0x3FFF, 0xFC00, 0x3FFF, 0xFC00, 0x1FFF, 0xF800, 
  55. 0x1FFF, 0xF800, 0x0FFF, 0xF000, 0x07FF, 0xE000, 0x01FF, 0x8000, 
  56. 0x003C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  57.  
  58. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0FFF, 0xFDE0, 
  59. 0x1F80, 0x07F0, 0x1F80, 0xE7F8, 0x1F80, 0xE7F8, 0x1F80, 0xE7F8, 
  60. 0x1F80, 0xE7F8, 0x1F80, 0xE7F8, 0x1F80, 0xE7F8, 0x1FC0, 0x0FF8, 
  61. 0x1FFF, 0xFFF8, 0x1FFF, 0xFFF8, 0x1FFF, 0xFFF8, 0x1C00, 0x0038, 
  62. 0x1C00, 0x0038, 0x1CF0, 0x0038, 0x1C00, 0x0038, 0x1CFF, 0x6038, 
  63. 0x1C00, 0x0038, 0x1CE4, 0x0038, 0x1C00, 0x0038, 0x1CFF, 0x9838, 
  64. 0x1C00, 0x0038, 0x14DF, 0x3038, 0x1400, 0x0038, 0x1C00, 0x0038, 
  65. 0x0FFF, 0xFFF0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  66.  
  67. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 
  68. 0x0000, 0xE000, 0x0001, 0xF000, 0x0003, 0xF800, 0x0005, 0xFC00, 
  69. 0x0008, 0xFE00, 0x0010, 0x7F00, 0x0020, 0x7F80, 0x0040, 0xFFC0, 
  70. 0x0087, 0xCF80, 0x010F, 0x8740, 0x010F, 0x82C0, 0x028F, 0x85C0, 
  71. 0x0347, 0x0BC0, 0x03A0, 0x17C0, 0x01D0, 0x2FC0, 0x0268, 0x5F80, 
  72. 0x0334, 0xBF00, 0x031B, 0x7E00, 0x018C, 0xFC00, 0x00CD, 0xF800, 
  73. 0x0065, 0xF000, 0x0039, 0xE000, 0x001D, 0xC000, 0x000D, 0x8000, 
  74. 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  75.  
  76. 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFF, 0xFFE0, 0x2C00, 0x00F0, 
  77. 0x3407, 0x80D8, 0x2C0F, 0xC0BC, 0x340C, 0xC0DC, 0x2C00, 0xC0BC, 
  78. 0x3401, 0x80DC, 0x2C03, 0x00BC, 0x3403, 0x00DC, 0x2C00, 0x00BC, 
  79. 0x3403, 0x00DC, 0x2C03, 0x00BC, 0x3400, 0x00DC, 0x2FFF, 0xFFBC, 
  80. 0x3555, 0x555C, 0x2AAA, 0xAABC, 0x35FF, 0xFD5C, 0x2B80, 0x06BC, 
  81. 0x3538, 0x035C, 0x2B38, 0x02BC, 0x3538, 0x035C, 0x2B38, 0x02BC, 
  82. 0x3538, 0x035C, 0x2B38, 0x02BC, 0x3500, 0x035C, 0x1FFF, 0xFFFC, 
  83. 0x0FFF, 0xFFFC, 0x07FF, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000,
  84.  
  85. 0x0000, 0x0000, 0x0001, 0x0000, 0x0003, 0x8000, 0x0007, 0xC000, 
  86. 0x0007, 0xE000, 0x000F, 0xF000, 0x000F, 0xF800, 0x002F, 0xFC00, 
  87. 0x006F, 0xFE00, 0x00DF, 0xFE00, 0x01BF, 0xFC00, 0x037F, 0xFC00, 
  88. 0x06FF, 0xF800, 0x037F, 0xFA00, 0x05BF, 0xFB00, 0x06DF, 0xF600, 
  89. 0x076F, 0xED00, 0x07B7, 0xDB00, 0x07DB, 0xB700, 0x07ED, 0x6F00, 
  90. 0x07F6, 0xDF00, 0x03FB, 0xBE00, 0x01FD, 0x7D80, 0x00FE, 0xFB80, 
  91. 0x007E, 0xFB80, 0x003E, 0xFB00, 0x001E, 0xF000, 0x000E, 0xE000, 
  92. 0x0006, 0xC000, 0x0002, 0x8000, 0x0000, 0x0000, 0x0000, 0x0000,
  93.  
  94. 0x0001, 0x8000, 0x0002, 0x4000, 0x0004, 0x2000, 0x0009, 0x9000, 
  95. 0x0013, 0xC800, 0x0027, 0xE400, 0x004F, 0xF200, 0x009F, 0xF900, 
  96. 0x013C, 0x3C80, 0x027C, 0x3E40, 0x04FC, 0x3F20, 0x09FC, 0x3F90, 
  97. 0x13FC, 0x3FC8, 0x27FC, 0x3FE4, 0x4FFC, 0x3FF2, 0x9FFC, 0x3FF9, 
  98. 0x9FFC, 0x3FF9, 0x4FFC, 0x3FF2, 0x27FC, 0x3FE4, 0x13FC, 0x3FC8, 
  99. 0x09FF, 0xFF90, 0x04FF, 0xFF20, 0x027C, 0x3E40, 0x013C, 0x3C80, 
  100. 0x009F, 0xF900, 0x004F, 0xF200, 0x0027, 0xE400, 0x0013, 0xC800, 
  101. 0x0009, 0x9000, 0x0004, 0x2000, 0x0002, 0x4000, 0x0001, 0x8000,
  102.  
  103. 0x7FFF, 0xFFFE, 0x8000, 0x0001, 0x9FFF, 0xFFF9, 0x4FE0, 0x0FF2, 
  104. 0x4FC0, 0x07F2, 0x2787, 0xC3E4, 0x27FF, 0xE3E4, 0x13FF, 0xE3C8, 
  105. 0x13FF, 0xC7C8, 0x09FF, 0x0F90, 0x09FE, 0x1F90, 0x04FC, 0x3F20, 
  106. 0x04FC, 0x3F20, 0x027C, 0x3E40, 0x027C, 0x3E40, 0x013C, 0x3C80, 
  107. 0x013F, 0xFC80, 0x009F, 0xF900, 0x009C, 0x3900, 0x004C, 0x3200, 
  108. 0x004F, 0xF200, 0x0027, 0xE400, 0x0027, 0xE400, 0x0013, 0xC800, 
  109. 0x0013, 0xC800, 0x0009, 0x9000, 0x0009, 0x9000, 0x0004, 0x2000, 
  110. 0x0004, 0x2000, 0x0002, 0x4000, 0x0002, 0x4000, 0x0001, 0x8000,
  111.  
  112. 0x007F, 0xFE00, 0x00C0, 0x0300, 0x01BF, 0xFD80, 0x037F, 0xFEC0, 
  113. 0x06FF, 0xFF60, 0x0DFF, 0xFFB0, 0x1BFF, 0xFFD8, 0x37FF, 0xFFEC, 
  114. 0x6FFF, 0xFFF6, 0xDFFF, 0xFFFB, 0xB181, 0x860D, 0xA081, 0x0205, 
  115. 0xA4E7, 0x3265, 0xA7E7, 0x3265, 0xA3E7, 0x3265, 0xB1E7, 0x3205, 
  116. 0xB8E7, 0x320D, 0xBCE7, 0x327D, 0xA4E7, 0x327D, 0xA0E7, 0x027D, 
  117. 0xB1E7, 0x867D, 0xBFFF, 0xFFFD, 0xDFFF, 0xFFFB, 0x6FFF, 0xFFF6, 
  118. 0x37FF, 0xFFEC, 0x1BFF, 0xFFD8, 0x0DFF, 0xFFB0, 0x06FF, 0xFF60, 
  119. 0x037F, 0xFEC0, 0x01BF, 0xFD80, 0x00C0, 0x0300, 0x007F, 0xFE00,
  120.  
  121. 0x0000, 0x0000, 0x0001, 0xC000, 0x0073, 0xE000, 0x00FB, 0xE700, 
  122. 0x00FB, 0xEF80, 0x1CFB, 0xEF80, 0x3EFB, 0xEF80, 0x3EFB, 0xEF80, 
  123. 0x3EFB, 0xEF80, 0x3EFB, 0xEF80, 0x3EFB, 0xEF80, 0x3EFB, 0xEF80, 
  124. 0x3EFB, 0xEF9C, 0x3EFB, 0xEFBC, 0x3EFB, 0xEFBC, 0x3FFF, 0xFF7C, 
  125. 0x3FFF, 0xFF7C, 0x3FFF, 0xFF7C, 0x3FFF, 0xFEFC, 0x3FFF, 0xF7F8, 
  126. 0x3FFF, 0xDFF8, 0x3FFF, 0x7FF0, 0x3FFF, 0xFFF0, 0x3FFD, 0xFFE0, 
  127. 0x1FFD, 0xFFC0, 0x0FFF, 0xFF80, 0x07FF, 0xFF00, 0x03FF, 0xFE00, 
  128. 0x03FF, 0xFE00, 0x03FF, 0xFE00, 0x03FF, 0xFE00, 0x0000, 0x0000,
  129.  
  130. 0x0000, 0x0000, 0x003F, 0xFC00, 0x00FF, 0xFF00, 0x01FF, 0xFF80, 
  131. 0x03FF, 0xFFC0, 0x03F0, 0x0FC0, 0x03E0, 0x07C0, 0x03E0, 0x07C0, 
  132. 0x01C0, 0x07C0, 0x0000, 0x0F80, 0x0000, 0x1F80, 0x0000, 0x3F00, 
  133. 0x0000, 0x7E00, 0x0000, 0xFC00, 0x0001, 0xF800, 0x0003, 0xF000, 
  134. 0x0007, 0xE000, 0x0007, 0xC000, 0x000F, 0x8000, 0x000F, 0x8000, 
  135. 0x000F, 0x8000, 0x000F, 0x8000, 0x000F, 0x8000, 0x0007, 0x0000, 
  136. 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000F, 0x8000, 
  137. 0x001F, 0xC000, 0x001F, 0xC000, 0x000F, 0x8000, 0x0000, 0x0000
  138. };
  139.  
  140. static BITBLK alert_icn = {(short *)&al_image[0],4,32,0,0,1};
  141.  
  142. /*-----------------------------------------------------------------------*
  143.  * Affichage d'une boite d'alerte                                        *
  144.  *-----------------------------------------------------------------------*/
  145. void FormAlerte(int index)
  146. {
  147.     char **alert;
  148.     rsrc_gaddr(R_FRSTR, index, &alert);     /* Adresse ptr sur ptr sur chaine */
  149.     form_alert(1, *alert);
  150. }
  151.  
  152. /*-----------------------------------------------------------------------*
  153.  * Gestion des boites d'alerte interne à WindGem                         *
  154.  *-----------------------------------------------------------------------*/
  155. int WindAlerte (int icone, BITBLK *user_icn, char *texte, char *bouton, int defaut)
  156. {
  157.     register int i = 0, j = 0, numtxt = 0, numbt = 0, maxlen = 0, butlen = 0, buttot = 0, sep = 0, pos = 0, obj;
  158.     char text[6][61], bout[4][21];
  159.     int wx, wy, ww, wh, Coef;
  160.     BITBLK *icn;
  161.     MFDB alt_fond;
  162.  
  163.     if (Sys->Yres < 399)
  164.     {
  165.         Coef = 2;
  166.         Sys->AdrAlerte[ALTTRAIT].ob_y += 2;
  167.     }
  168.     else
  169.         Coef = 1;
  170.  
  171.     /* Mise en place du texte du message */
  172.     text[0][0] = '\0'; text[1][0] = '\0'; text[2][0] = '\0';
  173.     text[3][0] = '\0'; text[4][0] = '\0'; text[5][0] = '\0';
  174.  
  175.     bout[0][0] = '\0'; bout[1][0] = '\0';
  176.     bout[2][0] = '\0'; bout[3][0] = '\0';
  177.  
  178.     /* Récupération du texte du message */
  179.     while (texte[i] && numtxt <= 5)
  180.     {
  181.         while (j <= (60 / Coef) && texte[i] && texte[i] != '|')
  182.             text[numtxt][j++] = texte[i++];
  183.         while (texte[i] && texte[i] != '|') i++;
  184.  
  185.         text[numtxt++][j] = '\0';
  186.         if (j > maxlen)
  187.             maxlen = j;
  188.         j = 0;
  189.         if (texte[i])
  190.             i++;
  191.     }
  192.  
  193.     /* Récupération du texte des boutons */
  194.     i = 0; j = 0;
  195.     while (bouton[i] && numbt <= 3)
  196.     {
  197.         while (j <= (20 / Coef) && bouton[i] && bouton[i] != '|')
  198.             bout[numbt][j++] = bouton[i++];
  199.         while (bouton[i] && bouton[i] != '|') i++;
  200.         bout[numbt++][j] = '\0';
  201.         if (butlen < j)
  202.             butlen = j;
  203.         buttot += j + (4 / Coef);
  204.         j = 0;
  205.         if (bouton[i])
  206.             i++;
  207.     }
  208.     if (maxlen < buttot)
  209.         maxlen = buttot;
  210.         
  211.     /* Modification de la taille de la boite d'alerte et de ses objets */
  212.  
  213.     /* Formulaire + trait de séparation du titre */
  214.     Sys->AdrAlerte->ob_width = 64 + (maxlen * 8);
  215.     Sys->AdrAlerte->ob_height = (160 / Coef) - ((6 - numtxt) * 16);
  216.  
  217.     if (strlen(text[0]) == 0)
  218.         Sys->AdrAlerte[ALTTRAIT].ob_width = 0;
  219.     else
  220.         Sys->AdrAlerte[ALTTRAIT].ob_width = maxlen * 8;
  221.  
  222.     /* Modifier taille des objets texte */
  223.     Sys->AdrAlerte[ALTTXT1].ob_width = 8 * strlen (text[0]);
  224.     Sys->AdrAlerte[ALTTXT2].ob_width = 8 * strlen (text[1]);
  225.     Sys->AdrAlerte[ALTTXT3].ob_width = 8 * strlen (text[2]);
  226.     Sys->AdrAlerte[ALTTXT4].ob_width = 8 * strlen (text[3]);
  227.     Sys->AdrAlerte[ALTTXT5].ob_width = 8 * strlen (text[4]);
  228.     Sys->AdrAlerte[ALTTXT6].ob_width = 8 * strlen (text[5]);
  229.  
  230.     /* Positionnement du texte du message */
  231.     set_text (Sys->AdrAlerte, ALTTXT1, text[0]);
  232.     set_text (Sys->AdrAlerte, ALTTXT2, text[1]);
  233.     set_text (Sys->AdrAlerte, ALTTXT3, text[2]);
  234.     set_text (Sys->AdrAlerte, ALTTXT4, text[3]);
  235.     set_text (Sys->AdrAlerte, ALTTXT5, text[4]);
  236.     set_text (Sys->AdrAlerte, ALTTXT6, text[5]);
  237.  
  238.     /* Modifier taille et position des objets bouton */
  239.     Sys->AdrAlerte[ALTBUT1].ob_width = 8 * butlen;
  240.     Sys->AdrAlerte[ALTBUT1].ob_y = (128 / Coef) - ((6 - numtxt) * 16);
  241.     Sys->AdrAlerte[ALTBUT2].ob_width = 8 * butlen;
  242.     Sys->AdrAlerte[ALTBUT2].ob_y = (128 / Coef) - ((6 - numtxt) * 16);
  243.     Sys->AdrAlerte[ALTBUT3].ob_width = 8 * butlen;
  244.     Sys->AdrAlerte[ALTBUT3].ob_y = (128 / Coef) - ((6 - numtxt) * 16);
  245.     Sys->AdrAlerte[ALTBUT4].ob_width = 8 * butlen;
  246.     Sys->AdrAlerte[ALTBUT4].ob_y = (128 / Coef) - ((6 - numtxt) * 16);
  247.  
  248.     sep = (maxlen * 8) / numbt;
  249.     pos = (sep - 8 * butlen) / 2;
  250.     Sys->AdrAlerte[ALTBUT1].ob_x = 56 + pos;
  251.     pos += sep;
  252.     Sys->AdrAlerte[ALTBUT2].ob_x = 56 + pos;
  253.     pos += sep;
  254.     Sys->AdrAlerte[ALTBUT3].ob_x = 56 + pos;
  255.     pos += sep;
  256.     Sys->AdrAlerte[ALTBUT4].ob_x = 56 + pos;
  257.  
  258.     /* Positionnement du texte des boutons */
  259.     if (numbt > 0)
  260.         Sys->AdrAlerte[ALTBUT1].ob_flags &= ~HIDETREE;
  261.     else
  262.         Sys->AdrAlerte[ALTBUT1].ob_flags |= HIDETREE;
  263.     set_text (Sys->AdrAlerte, ALTBUT1, bout[0]);
  264.  
  265.     if (numbt > 1)
  266.         Sys->AdrAlerte[ALTBUT2].ob_flags &= ~HIDETREE;
  267.     else
  268.         Sys->AdrAlerte[ALTBUT2].ob_flags |= HIDETREE;
  269.     set_text (Sys->AdrAlerte, ALTBUT2, bout[1]);
  270.  
  271.     if (numbt > 2)
  272.         Sys->AdrAlerte[ALTBUT3].ob_flags &= ~HIDETREE;
  273.     else
  274.         Sys->AdrAlerte[ALTBUT3].ob_flags |= HIDETREE;
  275.     set_text (Sys->AdrAlerte, ALTBUT3, bout[2]);
  276.  
  277.     if (numbt > 3)
  278.         Sys->AdrAlerte[ALTBUT4].ob_flags &= ~HIDETREE;
  279.     else
  280.         Sys->AdrAlerte[ALTBUT4].ob_flags |= HIDETREE;
  281.     set_text (Sys->AdrAlerte, ALTBUT4, bout[3]);
  282.  
  283.     /* Mise en place du bouton Défaut */
  284.     for (i=0;i<4;i++)
  285.     {
  286.         if (defaut == i + 1)
  287.             Sys->AdrAlerte[ALTBUT1 + i].ob_flags |= DEFAULT;
  288.         else
  289.             Sys->AdrAlerte[ALTBUT1 + i].ob_flags &= ~DEFAULT;
  290.     }            
  291.  
  292.     /* Choix de l'icone */
  293.     if (icone > 13)
  294.         icone = 13;
  295.     if (icone < -1)
  296.         icone = 0;
  297.     if (icone != ICN_USER)
  298.     {
  299.         icn = &alert_icn;
  300.         icn->bi_pdata = (void *) &al_image[icone << 6];
  301.     }
  302.     else
  303.         icn = user_icn;
  304.     Sys->AdrAlerte[ALTIMAGE].ob_spec.bitblk = icn;
  305.  
  306.     /* Affichage et gestion de la boite d'alerte */
  307.     form_center(Sys->AdrAlerte, &wx, &wy, &ww, &wh);
  308.     get_bkgr (max(0,wx), wy, min(Sys->Xres,ww), wh, &alt_fond);
  309.   objc_draw(Sys->AdrAlerte, ROOT, MAX_DEPTH, wx, wy, ww, wh);
  310.     obj = form_do (Sys->AdrAlerte, 0);
  311.     evnt_timer (100,0);
  312.     objc_change(Sys->AdrAlerte, obj, 0, Sys->AdrAlerte->ob_x, Sys->AdrAlerte->ob_y, Sys->AdrAlerte->ob_width, Sys->AdrAlerte->ob_height, 0, FALSE);
  313.     put_bkgr (max(0,wx), wy, min(Sys->Xres,ww), wh, &alt_fond);
  314.         
  315.     return (obj - ALTBUT1) + 1;
  316. }
  317.  
  318. /*--------------------------- Fin du module -----------------------------*/